\relax 
\@writefile{toc}{\contentsline {section}{\numberline {1}Foreword}{3}}
\citation{Larman}
\citation{Larman}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Shows a diagram of the packages in the project\relax }}{4}}
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{package}{{1}{4}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Architecture}{4}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Model-View-Controller}{4}}
\citation{Larman}
\citation{Larman}
\citation{Larman}
\citation{Larman}
\citation{Larman}
\citation{Larman}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Flow of Initialization and Search}{5}}
\newlabel{flow}{{2.1.1}{5}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Assigning Responsibilities}{5}}
\newlabel{arc_resp}{{2.2}{5}}
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Shows a diagram of the Classes in the project\relax }}{6}}
\newlabel{Class}{{2}{6}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.1}Delegation of Responsibilities in Our Program}{6}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.2}Relationship Between Searching and the Data Structures}{6}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.3}Different Implementations of Related Methods?}{6}}
\citation{EffectiveJava}
\citation{EffectiveJava}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.2.4}Benefits of Our Design}{7}}
\newlabel{design_benefits}{{2.2.4}{7}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Other issues regarding our implementation}{7}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.3.1}Inheriting from Object}{7}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Shows an example of a linked list \relax }}{8}}
\newlabel{linkedlistfigure1}{{3}{8}}
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Creating a new element and setting it at the end of the list \relax }}{8}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {A new element is created}}}{8}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {The \texttt {last List Element} is assigned to the new element}}}{8}}
\newlabel{createlinkedlist}{{4}{8}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Searchers}{8}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Linked List Searcher}{8}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/linkedListSearcher/LinkedListSearcher.java}{9}}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Adds an element to the linked list (from \texttt  {LinkedListSearcher} 56-66)\relax }}{9}}
\newlabel{linked56-66}{{5}{9}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/linkedListSearcher/LinkedListSearcher.java}{9}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Gets an element from the linked list (from \texttt  {LinkedListSearcher} 82-102)\relax }}{9}}
\newlabel{linked82-102}{{6}{9}}
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Example of a nested linked list \relax }}{10}}
\newlabel{nestedlinkedlistfigure1}{{7}{10}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/nestedLinkedListSearcher/NestedLinkedListSearcher.java}{10}}
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Sets current to first element (from \texttt  {nestedLinkedListSearcher} 63-66)\relax }}{10}}
\newlabel{nested63-66}{{8}{10}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Nested Linked List Searcher}{10}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/nestedLinkedListSearcher/NestedLinkedListSearcher.java}{10}}
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces Checks if first element contains data (from \texttt  {nestedLinkedListSearcher} 67-69)\relax }}{10}}
\newlabel{nested67-69}{{9}{10}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/nestedLinkedListSearcher/NestedLinkedListSearcher.java}{11}}
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Creates a new element if no match (from \texttt  {nestedLinkedListSearcher} 70-76)\relax }}{11}}
\newlabel{nested70-76}{{10}{11}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/nestedLinkedListSearcher/NestedLinkedListSearcher.java}{11}}
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Runs through the URL list(from \texttt  {nestedLinkedListSearcher} 77-79)\relax }}{11}}
\newlabel{nested77-79}{{11}{11}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/nestedLinkedListSearcher/NestedLinkedListSearcher.java}{11}}
\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces Increments occurrences if URL found(from \texttt  {nestedLinkedListSearcher} 80-82)\relax }}{11}}
\newlabel{nested80-82}{{12}{11}}
\citation{CL}
\citation{CL}
\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces Shows where the increment takes places \relax }}{12}}
\newlabel{nestedlinkedlistfigure2}{{13}{12}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/nestedLinkedListSearcher/NestedLinkedListSearcher.java}{12}}
\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces Increments occurrences if URL found(from \texttt  {nestedLinkedListSearcher} 83-87)\relax }}{12}}
\newlabel{nested83-87}{{14}{12}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}Hash Table Searchers}{12}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1}Hash Table Data Structure}{12}}
\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces Creating a new URL element and pointing the nested linked list towards the new element \relax }}{12}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {A new URL list element is created}}}{12}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {The nested linked list is being pointed towards the new URL list}}}{12}}
\newlabel{createurllist}{{15}{12}}
\@writefile{lof}{\contentsline {figure}{\numberline {16}{\ignorespaces Our hash table data structure containing \texttt  {NestedLinkedList}s \relax }}{13}}
\newlabel{hashtable}{{16}{13}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.2}Our Implementation}{13}}
\newlabel{hash_imp}{{3.3.2}{13}}
\citation{CL}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.3}Load Factor and Dynamic Hash Table}{14}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.4}A Design Problem}{14}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.5}Time Complexity}{14}}
\@writefile{toc}{\contentsline {section}{\numberline {4}Searching With Boolean Operators}{14}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}How It Works}{15}}
\newlabel{query1}{{1}{15}}
\newlabel{query2}{{2}{15}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Limitations}{15}}
\newlabel{boolean_limitations}{{4.2}{15}}
\@writefile{lof}{\contentsline {figure}{\numberline {17}{\ignorespaces Syntax trees for the expressions (1\hbox {}) and (2\hbox {})\relax }}{16}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$word_1 \tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em} \textbf {OR} \tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em} word_2\tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em} \textbf {AND}\tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em}word_3$}}}{16}}
\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$(word_1 \tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em} \textbf {OR} \tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em} word_2)\tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em} \textbf {AND} \tmspace +\thinmuskip {.1667em}\tmspace +\thinmuskip {.1667em}word_3$}}}{16}}
\newlabel{trees}{{17}{16}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Syntax Tree Data Structure}{16}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}More on Implementation and Time Complexity}{16}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.4.1}Growing the tree}{16}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.4.2}Time Complexity}{17}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {4.4.3}Possible Changes}{17}}
\@writefile{toc}{\contentsline {section}{\numberline {5}Benchmark}{17}}
\newlabel{benchmark}{{5}{17}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Introduction}{17}}
\citation{IBM1}
\citation{IBM1}
\citation{IBM2}
\citation{IBM3}
\citation{IBM3}
\citation{IBM2}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1}Experimental Design}{18}}
\citation{CL}
\@writefile{lof}{\contentsline {figure}{\numberline {18}{\ignorespaces Result for load benchmark (medium data file). Mean, standard deviation and confidence interval (ms). N = 10.\relax }}{19}}
\newlabel{loadtable}{{18}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Data Load Benchmarks}{19}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.1}Linked List}{19}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.2}Nested Linked List}{19}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.3}Static Hash Table}{19}}
\@writefile{lof}{\contentsline {figure}{\numberline {19}{\ignorespaces Load time (ms, logarithmic scale) for N = 10 loads.\relax }}{20}}
\newlabel{LoadMedium}{{19}{20}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.4}Dynamic Hash Table}{20}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.5}Conclusion}{20}}
\@writefile{lof}{\contentsline {figure}{\numberline {20}{\ignorespaces Search time (ms) for 10,000 searches, 100 times per Array size (1 to 30)\relax }}{21}}
\newlabel{ArraySize}{{20}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Search Execution Benchmarks}{21}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.1}Linked List}{21}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.2}Nested Linked List}{21}}
\citation{IBM2}
\citation{IBM2}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.3}Static Hash Table}{22}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.4}Dynamic Hash Table}{22}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {5.3.5}Conclusion}{22}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Validity and Generalisability}{22}}
\@writefile{lof}{\contentsline {figure}{\numberline {21}{\ignorespaces Search time (ms, logarithmic scale) for 10,000 searches, 100 times per data structure\relax }}{23}}
\newlabel{Search_medium}{{21}{23}}
\@writefile{lof}{\contentsline {figure}{\numberline {22}{\ignorespaces Result for search benchmark (medium data file). Mean, standard deviation and confidence interval (ms). N = 100 (98 for the hashmaps) (of 10,000 searchers each).\relax }}{23}}
\newlabel{searchtable}{{22}{23}}
\citation{Test}
\citation{Test}
\citation{Test}
\citation{Test}
\citation{Test}
\@writefile{toc}{\contentsline {section}{\numberline {6}Testing}{24}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}White-Box Testing}{24}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Black-Box Testing}{24}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/test/whiteboxTest.java}{25}}
\@writefile{lof}{\contentsline {figure}{\numberline {23}{\ignorespaces  Excerpt of code for white-box test.\relax }}{25}}
\newlabel{whitebox_test_code}{{23}{25}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/hashTableSearchers/StaticHashTable.java}{26}}
\@writefile{lof}{\contentsline {figure}{\numberline {24}{\ignorespaces  \texttt  {StaticHashTable.put( String key , String value )}\relax }}{26}}
\newlabel{whitebox_put_code}{{24}{26}}
\@writefile{lof}{\contentsline {figure}{\numberline {25}{\ignorespaces Choice statements for \texttt  {StaticHashTable.put( String key, String value)}\relax }}{26}}
\newlabel{whitebox_put_property}{{25}{26}}
\@writefile{lof}{\contentsline {figure}{\numberline {26}{\ignorespaces Choice statements for \texttt  {StaticHashTable.put( String key, String value)}\relax }}{27}}
\newlabel{whitebox_put_data}{{26}{27}}
\@writefile{lol}{\contentsline {lstlisting}{../../src/model/searchers/advancedSearchers/hashTableSearchers/StaticHashTable.java}{27}}
\@writefile{lof}{\contentsline {figure}{\numberline {27}{\ignorespaces  \texttt  {StaticHashTable.get( String key )}\relax }}{27}}
\newlabel{whitebox_get_code}{{27}{27}}
\@writefile{lof}{\contentsline {figure}{\numberline {28}{\ignorespaces Choice statements for \texttt  {StaticHashTable.get( String key)}\relax }}{27}}
\newlabel{whitebox_get_property}{{28}{27}}
\@writefile{lof}{\contentsline {figure}{\numberline {29}{\ignorespaces Choice statements for \texttt  {StaticHashTable.get( String key)}\relax }}{27}}
\newlabel{whitebox_get_data}{{29}{27}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1}Constructing Data Files for Testing}{28}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2}Creating a Test Data-File}{28}}
\@writefile{lof}{\contentsline {figure}{\numberline {30}{\ignorespaces Data load test: Extreme input \relax }}{29}}
\newlabel{load_extreme_input}{{30}{29}}
\@writefile{lof}{\contentsline {figure}{\numberline {31}{\ignorespaces Regular and extreme inputs without accounting for boolean operators\relax }}{29}}
\newlabel{search_without_boolean}{{31}{29}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3}Test Queries and Expected Outcomes}{29}}
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Some Final Words on Our Tests}{29}}
\@writefile{lof}{\contentsline {figure}{\numberline {32}{\ignorespaces Regular inputs accounting for boolean operators\relax }}{30}}
\newlabel{search_with_boolean}{{32}{30}}
\@writefile{toc}{\contentsline {section}{\numberline {7}Conclusion}{30}}
\bibcite{IBM1}{Broyer 2008a}
\bibcite{IBM2}{Broyer 2008b}
\bibcite{IBM3}{Broyer 2008c}
\bibcite{CL}{Cormen et al. 2009}
\bibcite{Larman}{Larman 2008}
\bibcite{Fowler}{Fowler 2008}
\bibcite{Test}{Sestoft 1998}
\bibcite{EffectiveJava}{Bloch 2008}
\@writefile{toc}{\vspace  {5mm}\hrule }
\@writefile{toc}{\contentsline {section}{\hbox to\@tempdima {A\hfil }UML Diagram: Data Structures and Searchers}{31}}
\@writefile{toc}{\contentsline {section}{\hbox to\@tempdima {B\hfil }UML Diagram: Views}{32}}
\@writefile{toc}{\contentsline {section}{\hbox to\@tempdima {C\hfil }Black-box Testing of Load}{33}}
\newlabel{bb_load}{{7}{33}}
\@writefile{toc}{\contentsline {section}{\hbox to\@tempdima {D\hfil }Black-box Test without Boolean Search}{33}}
\newlabel{bb_without}{{7}{34}}
\@writefile{toc}{\contentsline {section}{\hbox to\@tempdima {E\hfil }Black-box Test with Boolean Search}{34}}
\newlabel{bb_with}{{7}{34}}
\gdef \LT@i {\LT@entry 
    {9}{146.9532pt}\LT@entry 
    {1}{133.84572pt}\LT@entry 
    {1}{133.84572pt}}
